@@ -117,6 +117,10 @@ module Agents |
||
| 117 | 117 |
format: options[:format]) |
| 118 | 118 |
end |
| 119 | 119 |
|
| 120 |
+ def feed_icon |
|
| 121 |
+ interpolated['template']['icon'].presence || feed_link + '/favicon.ico' |
|
| 122 |
+ end |
|
| 123 |
+ |
|
| 120 | 124 |
def feed_description |
| 121 | 125 |
interpolated['template']['description'].presence || "A feed of Events received by the '#{name}' Huginn Agent"
|
| 122 | 126 |
end |
@@ -166,6 +170,7 @@ module Agents |
||
| 166 | 170 |
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> |
| 167 | 171 |
<channel> |
| 168 | 172 |
<atom:link href=#{feed_url(secret: params['secret'], format: :xml).encode(xml: :attr)} rel="self" type="application/rss+xml" />
|
| 173 |
+ <atom:icon>#{feed_icon.encode(xml: :text)}</atom:icon>
|
|
| 169 | 174 |
<title>#{feed_title.encode(xml: :text)}</title>
|
| 170 | 175 |
<description>#{feed_description.encode(xml: :text)}</description>
|
| 171 | 176 |
<link>#{feed_link.encode(xml: :text)}</link>
|
@@ -133,6 +133,7 @@ describe Agents::DataOutputAgent do |
||
| 133 | 133 |
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> |
| 134 | 134 |
<channel> |
| 135 | 135 |
<atom:link href="https://yoursite.com/users/#{agent.user.id}/web_requests/#{agent.id}/secret1.xml" rel="self" type="application/rss+xml"/>
|
| 136 |
+ <atom:icon>https://yoursite.com/favicon.ico</atom:icon> |
|
| 136 | 137 |
<title>XKCD comics as a feed</title> |
| 137 | 138 |
<description>This is a feed of recent XKCD comics, generated by Huginn</description> |
| 138 | 139 |
<link>https://yoursite.com</link> |
@@ -229,6 +230,21 @@ describe Agents::DataOutputAgent do |
||
| 229 | 230 |
expect(content['title']).to eq('XKCD comics as a feed (XKCD)')
|
| 230 | 231 |
end |
| 231 | 232 |
end |
| 233 |
+ |
|
| 234 |
+ describe "with a specified icon" do |
|
| 235 |
+ before do |
|
| 236 |
+ agent.options['template']['icon'] = 'https://somesite.com/icon.png' |
|
| 237 |
+ agent.save! |
|
| 238 |
+ end |
|
| 239 |
+ |
|
| 240 |
+ it "can output RSS" do |
|
| 241 |
+ stub(agent).feed_link { "https://yoursite.com" }
|
|
| 242 |
+ content, status, content_type = agent.receive_web_request({ 'secret' => 'secret1' }, 'get', 'text/xml')
|
|
| 243 |
+ expect(status).to eq(200) |
|
| 244 |
+ expect(content_type).to eq('text/xml')
|
|
| 245 |
+ expect(Nokogiri(content).at('/rss/channel/atom:icon/text()').text).to eq('https://somesite.com/icon.png')
|
|
| 246 |
+ end |
|
| 247 |
+ end |
|
| 232 | 248 |
end |
| 233 | 249 |
|
| 234 | 250 |
describe "outputting nesting" do |
@@ -329,7 +345,8 @@ describe Agents::DataOutputAgent do |
||
| 329 | 345 |
<?xml version="1.0" encoding="UTF-8" ?> |
| 330 | 346 |
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> |
| 331 | 347 |
<channel> |
| 332 |
- <atom:linkhref="https://yoursite.com/users/#{agent.user.id}/web_requests/#{agent.id}/secret1.xml" rel="self" type="application/rss+xml"/>
|
|
| 348 |
+ <atom:link href="https://yoursite.com/users/#{agent.user.id}/web_requests/#{agent.id}/secret1.xml" rel="self" type="application/rss+xml"/>
|
|
| 349 |
+ <atom:icon>https://yoursite.com/favicon.ico</atom:icon> |
|
| 333 | 350 |
<title>XKCD comics as a feed</title> |
| 334 | 351 |
<description>This is a feed of recent XKCD comics, generated by Huginn</description> |
| 335 | 352 |
<link>https://yoursite.com</link> |